package cn.hl.hm.service;

import com.vizhuo.client.base.AbstractVo;
import com.vizhuo.client.business.appmanage.vo.AppVersionVo;
import com.vizhuo.client.business.match.goods.vo.GoodsVo;

/**
 * 推送至 商户 客户端 服务
 * 
 * @author dcq 作者 E-mail: ding_chuanqin@163.com
 * @date 创建时间：2016年7月1日 下午3:10:39
 * @version 1.0
 * @parameter
 * @since
 * @return
 */
public interface AppPushToLogisticsService {


    /**
     * 司机-抢单 推送接口 推送信息给物流公司/信息部
     * 
     * @param goodsVo
     *            用车信息对象
     */
    public void pushApplyOrder(GoodsVo goodsVo) throws Exception;

    /**
     * 发货方评价承运人(司机和信息部都可)
     * 
     * @param targetPhoneNumber
     *            物流公司/信息部的账号（手机号）
     * @param driverName
     *            评价者的姓名
     * @param evalnum
     *            星级,0-5
     * @param goodsNo
     *            货源编号
     */
    public void pushEvaluation(String targetPhoneNumber, String valuatorName, String evalnum, String goodsNo)
            throws Exception;

    /**
     * 我要用车、我要发货接口，推送信息给信息部接口
     * 
     * @param goodsVo
     *            货源、用车信息
     * @return 返回成功推送数
     */
    public int pushGoodToDifferenceCity(GoodsVo goodsVo) throws Exception;

    /**
     * 指派物流公司推送给物流公司
     * 
     * @param phoneNumber
     * @param goodsVo
     * @throws Exception
     */
    public void pushOrderToLogistics(String phoneNumber, GoodsVo goodsVo) throws Exception;

    /**
     * 推送强制更新通知给信息部android客户端
     * 
     * @throws Exception
     */
    public void pushForceUpgrade4Android(AppVersionVo appVersionVo) throws Exception;

    /**
     * 推送强制更新通知给信息部ios客户端
     * 
     * @throws Exception
     */
    public void pushForceUpgrade4IOS(AppVersionVo appVersionVo) throws Exception;

    /**
     * 审核信息推送消息
     * 
     * @param phoneNumber
     *            手机号
     * @param pushText
     *            标题
     * @param accountType
     *            文本内容
     * @param abstractVo
     *            登录对象(MebInfoVo ,MebDriverVo， MebConsignerVo),不同账号不同
     * @throws Exception
     */
    public void pushMsgByAccount(String phoneNumber, String pushTitle, String pushText, String accountType,
            AbstractVo abstractVo) throws Exception;

    /**
     * 单播
     * 
     * @param phoneNumber
     *            手机号
     * @param pushTitle
     *            标题
     * @param pushText
     *            文本内容
     * @throws Exception
     */
    public void pushSysMsgByAccount(int operationType, String phoneNumber, String pushTitle, String pushText)
            throws Exception;

    /**
     * 所有设备
     * 
     * @param pushTitle
     *            标题
     * @param pushText
     *            文本内容
     * @throws Exception
     */
    public void pushSysMsgAll(String title, String pushText) throws Exception;

    /**
     * 所有设备
     * 
     * @param operationType
     *            类型
     * @param pushTitle
     *            标题
     * @param pushText
     *            文本内容
     * @throws Exception
     */
    public void pushSysMsgAll(int operationType, String title, String pushText) throws Exception;

    /**
     * 推送测试-所有设备(列播)
     * 
     * @param operationTypeSysMsgAll
     * @param title
     * @param context
     */
    public void pushTest(int operationType, String title, String context);

}
